package com.dican.portal.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.dican.portal.beans.Produto;
import com.dican.portal.login.Conexao;

public class ProdutoDAO {
	private static Connection conn;
	
	public static Produto getProduto(String orgId, String prodCod) throws Exception, SQLException{
		Produto produto = null;
		conn = Conexao.getConnection();
		String query="select m.m_product_id, m.value, m.name, p.pricelist, tax.aliquota, m.isactive from m_product m ";
    	query+="inner join m_productprice p on m.m_product_id=p.m_product_id ";
    	query+="and p.m_pricelist_version_id=(select max(pv.m_pricelist_version_id) from m_pricelist_version pv where pv.m_pricelist_id=(select pl.m_pricelist_id from m_pricelist pl where (case when ad_org_isinnaturaltree(pl.ad_org_id,?,pl.ad_client_id)='Y' then true else false end) and pl.isactive='Y' and pl.isdefault='Y' ) and pv.isactive='Y') ";
    	query+="inner join brcore_ncm n on m.em_brcore_ncm_id=n.brcore_ncm_id ";
    	query+="inner join brtax_ic_ncm tax on n.value like tax.ncm||'%' and c_tax_zone_id='44E5299DE2EC4CA3AD74BBCEF557E5F4' ";
    	query+="where m.value=? and (case when ad_org_isinnaturaltree(m.ad_org_id,?,m.ad_client_id)='Y' then true else false end)";
    	PreparedStatement stmt = conn.prepareStatement(query);
    	stmt.setString(1, orgId);
    	stmt.setString(2, prodCod);
		stmt.setString(3, orgId);
		ResultSet rs = stmt.executeQuery();
		if(rs.next())
		{
			produto = new Produto();
			produto.setId(rs.getString(1));
			produto.setCodigo(rs.getString(2));
			produto.setNome(rs.getString(3));
			produto.setValor(Double.parseDouble(rs.getString(4)));
			produto.setIpi(Double.parseDouble(rs.getString(5)));
			produto.setAtivo(rs.getString(6));
			produto.setQuantidade(0);
		}
		conn.close();
		stmt.close();
		rs.close();
		conn = null;
		rs = null;
		stmt = null;
		return produto;
    }
	
	public static Produto getDescProduto(String orgId, String codigo) throws Exception, SQLException{
		Produto produto = null;
		conn = Conexao.getConnection();
		String query="select m.m_product_id, m.value, m.name, p.pricelist, m.isactive from m_product m ";
    	query+="inner join m_productprice p on m.m_product_id=p.m_product_id ";
    	query+="and p.m_pricelist_version_id=(select pv.m_pricelist_version_id from m_pricelist_version pv where pv.m_pricelist_id=(select pl.m_pricelist_id from m_pricelist pl where (case when ad_org_isinnaturaltree(pl.ad_org_id,?,pl.ad_client_id)='Y' then true else false end) and pl.isactive='Y' and pl.isdefault='Y' ) and pv.isactive='Y') ";
    	query+="where m.value=? and (case when ?='0' then true when m.ad_org_id=? then true else false end)";
    	PreparedStatement stmt = conn.prepareStatement(query);
    	stmt.setString(1, orgId);
		stmt.setString(2, codigo);
		stmt.setString(3, orgId);
		stmt.setString(4, orgId);
		ResultSet rs = stmt.executeQuery();
		if(rs.next())
		{
			produto = new Produto();
			produto.setId(rs.getString(1));
			produto.setCodigo(rs.getString(2));
			produto.setNome(rs.getString(3));
			produto.setValor(Double.parseDouble(rs.getString(4)));
			produto.setAtivo(rs.getString(5));
		}
		conn.close();
		stmt.close();
		rs.close();
		conn = null;
		rs = null;
		stmt = null;
		return produto;
    }
}
